package it.pir.es02ChatTCP;

import java.io.*;

public class ClientHandlerTxt extends ClientHandler {
	
	public ClientHandlerTxt(String nickname, Server server, InputStream inputStream) throws UnsupportedEncodingException {
		super(nickname, server, inputStream);
	}

	@Override
	public void run() {
		BufferedReader bufferedReader = null;
		try {
			bufferedReader = new BufferedReader(new InputStreamReader(inputStream, Message.ENCODE));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			System.exit(1);
		}
		
		while(true) {
			try {
				String nick = bufferedReader.readLine();
				String msg = bufferedReader.readLine();
				int typ = Integer.parseInt(bufferedReader.readLine());
				if(typ == Message.MESSAGE) {
					server.broadcastSend(nickname, new Message(nick, msg, typ));
				} else {
					// ERRORE: I messaggi dopo il primo non devono essere di autenticazione!
					System.out.println("ERRORE!!! Il messaggio deve essere di autenticazione!");
				}
			} catch (IOException e) {
				// Il client si è disconnesso
				try {
					server.broadcastSend(nickname, new Message("SERVER", "L'utente " + nickname + " si è disconnesso.", Message.MESSAGE));
				} catch (IOException e1) {}
				server.removeClient(nickname);
				break;
			} catch (NumberFormatException e) {
				// Il client si è disconnesso
				try {
					server.broadcastSend(nickname, new Message("SERVER", "L'utente " + nickname + " si è disconnesso.", Message.MESSAGE));
				} catch (IOException e1) {}
				server.removeClient(nickname);
				break;
			}
		}
	}

}
